package 春招冲刺百题计划;

import java.util.ArrayList;
import java.util.List;

/**
 * Created with IntelliJ IEDA.
 * Description:
 * User:86186
 * Date:2024-04-17
 * Time:15:59
 */

/**
 * 春招冲刺百题计划:54. 螺旋矩阵
 * 相关标签
 * 相关企业
 * 提示
 * 给你一个 m 行 n 列的矩阵 matrix ，请按照 顺时针螺旋顺序 ，返回矩阵中的所有元素。
 * 示例 1：
 * 输入：matrix = [[1,2,3],[4,5,6],[7,8,9]]
 * 输出：[1,2,3,6,9,8,7,4,5]
 */
public class spiralOrder {
    public static void main(String[] args) {
        spiralOrder(new int[][]{{1,2,3},{4,5,6},{7,8,9}});
    }
    public static List<Integer> spiralOrder(int[][] matrix) {
        List<Integer> res = new ArrayList<>();
        int left = 0;
        int right = matrix[0].length - 1;
        int top = 0;
        int buttom = matrix.length - 1;
        while(left <= right && top <= buttom){
            for(int i = left;i <= right;i++){
                res.add(matrix[top][i]);
            }
            top++;
            for(int i = top;i <= buttom;i++){
                res.add(matrix[i][right]);
            }
            right--;
            for(int i = right;i >= left && top <= buttom;i--){
                res.add(matrix[buttom][i]);
            }
            buttom--;
            for(int i = buttom;i >= top && left <= right;i--){
                res.add(matrix[i][left]);
            }
            left++;
        }
        return res;
    }
}
